package cn.chengpengper.seckill.activity.infrastructure.mapper;

import cn.chengpengper.seckill.activity.domain.model.entity.SeckillActivity;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @author chengpeng.hu
 */
public interface SeckillActivityMapper {

    /**
     * 保存秒杀活动信息
     *
     * @param seckillActivity 秒杀活动
     * @return 影响行数
     */
    int saveSeckillActivity(SeckillActivity seckillActivity);

    /**
     * 根据秒杀活动状态获取活动列表
     *
     * @param status 秒杀活动
     * @return 活动列表
     */
    List<SeckillActivity> getSeckillActivityList(@Param("status") Integer status);

    /**
     * 根据时间和状态获取活动列表
     *
     * @param currentTime 当前时间
     * @param status      活动状态
     * @return 活动列表
     */
    List<SeckillActivity> getSeckillActivityBetweenStartTimeAndEndTime(@Param("currentTime") Date currentTime, @Param("status") Integer status);

    /**
     * 根据活动ID获取活动详情
     *
     * @param id 活动ID
     * @return 活动信息
     */
    SeckillActivity getSeckillActivityById(@Param("id") Long id);

    /**
     * 更新活动状态
     *
     * @param status 活动状态
     * @param id     活动ID
     * @return 影响行数
     */
    int updateStatus(@Param("status") Integer status, @Param("id") Long id);
}
